﻿using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace FloorDesigner
{
    public class CopiedEventArgs<T> : EventArgs
    {
        public T ShapeTool { get; set; }
        public T TableElement { get; set; }

        public CopiedEventArgs(
            T _shapeTool,
            T _tableElement)
        {
            this.ShapeTool = _shapeTool;
            this.TableElement = _tableElement;
        }
    }

    public class DraggingEventArgs : EventArgs
    {
        public FrameworkElement TableElement { get; set; }
        public bool TargetIsValid { get; set; }
        public Panel Container { get; set; }

        public DraggingEventArgs(
            FrameworkElement dragElement,
            bool targetIsValid,
            Panel container)
        {
            this.TableElement = dragElement;
            this.TargetIsValid = targetIsValid;
            this.Container = container;
        }
    }

    public class DragStartedEventArgs : EventArgs
    {
        public FrameworkElement TableElement { get; set; }

        public DragStartedEventArgs(
            FrameworkElement dragObj)
        {
            this.TableElement = dragObj;
        }
    }

    public class DroppedEventArgs : EventArgs
    {
        public FrameworkElement TableElement { get; set; }
        public bool DropSuccessful { get; set; }
        public Panel Container { get; set; }

        public DroppedEventArgs(
            FrameworkElement dragElement,
            bool dropSuccessful,
            Panel container)
        {
            this.TableElement = dragElement;
            this.DropSuccessful = dropSuccessful;
            this.Container = container;
        }
    }

    public class ContainerEventArgs<T> : EventArgs
    {
        public T TableElement { get; set; }
        public Panel Container { get; set; }

        public ContainerEventArgs(
            T dragElement,
            Panel container)
        {
            this.TableElement = dragElement;
            this.Container = container;
        }
    }
}
